﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Data.SqlClient;
using GestorDeFlotasDesktop.Classes;

namespace GestorDeFlotasDesktop.AbmReloj
{
    public partial class AbmReloj : Form
    {
        public AbmReloj()
        {
            InitializeComponent();
            populateMarca();
        }

        private void populateMarca()
        {
            SqlInterface.Conectar();
            SqlDataReader MarcaReader = SqlInterface.ExecuteReader(
                "SELECT DISTINCT RELOJ_MARCA FROM SQUIRTLE.RELOJ", CommandType.Text);

            List<String> listaMarcas = new List<string>();
            while (MarcaReader.Read())
            {
                listaMarcas.Add(MarcaReader.GetString(MarcaReader.GetOrdinal("RELOJ_MARCA")));
            }
            cmbMarca.DataSource = listaMarcas;
            SqlInterface.Desconectar();
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            boxModelo.Text = string.Empty;
            boxNroSerie.Text = string.Empty;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            List<SqlParameter> Parameters = new List<SqlParameter>();

            if (boxModelo.Text == string.Empty)
                Parameters.Add(new SqlParameter("@modelo", DBNull.Value));
            else
                Parameters.Add(new SqlParameter("@modelo", boxModelo.Text));

            if (boxNroSerie.Text == string.Empty)
                Parameters.Add(new SqlParameter("@serie", DBNull.Value));
            else
                Parameters.Add(new SqlParameter("@serie", boxNroSerie.Text));

            // COMENTADO HASTA ENCONTRAR LA FORMA DE AGREGAR OPCIÓN VACÍA EN EL COMBO BOX
            //if (cmbMarca..ToString() == "")
            //    Parameters.Add(new SqlParameter("@marca", DBNull.Value));
            //else
            Parameters.Add(new SqlParameter("@marca", cmbMarca.GetItemText(this.cmbMarca.SelectedItem)));

            SqlInterface.Conectar();
            SqlDataReader TaxiConRelojReader;
            TaxiConRelojReader = SqlInterface.ExecuteReader("SQUIRTLE.spBuscarReloj", CommandType.StoredProcedure, Parameters);
            if (TaxiConRelojReader.HasRows)
            {
                DataTable tablaResultado = new DataTable();
                tablaResultado.Load(TaxiConRelojReader);
                gridResultados.DataSource = tablaResultado;
                gridResultados.Columns[0].Visible = false; //Oculta la PK del Reloj
            }
            else
            {
                MessageBox.Show("No hay reloj que cumpla con las condiciones de la búsqueda.");
            }
            SqlInterface.Desconectar();
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            NuevoReloj nuevoReloj = new NuevoReloj();
            nuevoReloj.Show();
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridResultados.SelectedRows.Count > 1)
            {
                MessageBox.Show("Solo esta permitido elegir un reloj por vez.");
                return;
            }

            List<SqlParameter> Parameters = new List<SqlParameter>();
            int index = gridResultados.SelectedCells[0].RowIndex;
            
            int relojCodigo = Convert.ToInt32(gridResultados["RELOJ_CODIGO", index].Value);
            Parameters.Add(new SqlParameter("@Reloj", Convert.ToInt32(gridResultados["RELOJ_CODIGO", index].Value))); //PK del Reloj

            SqlInterface.Conectar();
            int resultado = SqlInterface.ExecuteNonQuery("SQUIRTLE.spBajaReloj", CommandType.StoredProcedure, Parameters);
            if (resultado == -1)
                MessageBox.Show("No se ha podido eliminar el reloj solicitado.");
            else if (resultado == 1)
                MessageBox.Show("El reloj ha sido eliminado con éxito.");
            else if (resultado == 2)
                MessageBox.Show("El reloj ha sido eliminado con éxito. Advertencia: el reloj estaba asignado a un taxi.");

            Parameters.Clear();
            SqlInterface.Desconectar();
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridResultados.SelectedRows.Count > 1)
            {
                MessageBox.Show("Sólo esta permitido elegir un reloj por vez.");
                return;
            }

            Reloj reloj = new Reloj();
            int index = gridResultados.SelectedCells[0].RowIndex;
            reloj.intReloj = Convert.ToInt32(gridResultados["RELOJ_CODIGO", index].Value);
            reloj.strModelo = Convert.ToString(gridResultados["RELOJ_MODELO", index].Value);
            reloj.strMarca = Convert.ToString(gridResultados["RELOJ_MARCA", index].Value);
            reloj.strNroSerie = Convert.ToString(gridResultados["RELOJ_NROSERIE", index].Value);
            reloj.blnHabilitado = Convert.ToBoolean(gridResultados["RELOJ_HABILITADO", index].Value);
            reloj.dtmFecha = Convert.ToDateTime(gridResultados["RELOJ_FECHAVERIFICACION", index].Value);

            NuevoReloj modificionForm = new NuevoReloj(reloj);
            modificionForm.Show();
        }

        private void AbmReloj_Load(object sender, EventArgs e)
        {

        }
    }
}
